package br.com.iswe.gerador.velocity.gerador;

import org.apache.velocity.VelocityContext;

import br.com.iswe.gerador.velocity.info.InfoEntidadeImpl;
import br.com.iswe.gerador.velocity.info.InfoGerador;
import br.com.iswe.gerador.velocity.patterns.DAOPattern;

public class GeradorGaeDAOImpl extends GeradorGenerico {

	public static final String NOME_GERADOR = "geradorGaeDAOImpl";
	private static final String GERADOR_DAO_PASTA_SAIDA = "gerador.dao.pasta.saida";

	DAOPattern daoPattern = new DAOPattern();
	
	public GeradorGaeDAOImpl() {
		this.templateName = "DAO-IMPL-TEMPLATE.vm";
		this.handler = new GeradorHandler(){
			public String getNomeArquivo(InfoEntidadeImpl infoEntidade) {
				return daoPattern.getImplName(infoEntidade) + ".java";
			}
			public String getPackageObjeto(InfoEntidadeImpl infoEntidade) {
				return daoPattern.getPackage(infoEntidade);
			}
			public boolean shouldGenerateFile(InfoGerador infoGerador, String arquivo) {
				return infoGerador.shouldGenerateFile(arquivo);
			}
		};
	}
	
	@Override
	public void inicio(InfoGerador infoGerador) {
		super.inicio(infoGerador);
		this.pastaSaida = infoGerador.getPropriedade(GERADOR_DAO_PASTA_SAIDA);
	}
	
	static final String PACOTE_DAO = "PacoteDAO";
	@Override
	protected void configVelocityContext(VelocityContext ctx, InfoEntidadeImpl infoEntidade) {
		ctx.put(PACOTE_DAO, daoPattern.getPackage(infoEntidade));
	}
}
